package com.geek.javase.ch17.work.tcpwork.tcp1;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/*
 *@author wangpeng
 *2025/11/4 9:33
 *@description
 * 需求1：客户端与服务端可以建立连接 ； 服务端接收一条消息，客户端发送一条消息
 */
public class TCPServer {
    public static void main(String[] args) {
        System.out.println("-----------服务器----------");
        ServerSocket ss = null;
        Socket s = null;   //注意：这里的Socket s用于接收客户端，而不是客户端！！！
        InputStream is = null;
        InputStreamReader isr = null;
        BufferedReader br = null;

        try {
            //1.创建服务器
            ss = new ServerSocket(8899);
            //2.等待客户端连接 阻塞点
            s = ss.accept();
            System.out.println("客户端已成功接入！");
            //3.服务端读取消息
            is = s.getInputStream();
            isr = new InputStreamReader(is);
            br = new BufferedReader(isr);
            String str = br.readLine();
            System.out.println("客户端说：" + str);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            //关闭前面开启的连接、流
            if (ss!=null){
                try{
                    ss.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            if (s!=null){
                try{
                    s.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            if (is!=null){
                try{
                    is.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            if (isr!=null){
                try{
                    isr.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            if (br!=null){
                try{
                    br.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
        }
    }
}
